package cn.leaf.calculator.engine;


import cn.leaf.calculator.bean.CalResultEntity;
import cn.leaf.calculator.bean.ParameterEntity;
import cn.leaf.calculator.resolver.FormulaBeanDefinitionResolver;

import java.util.Collection;

/**
 * 计算引擎
 *
 * @author 李克国
 * @version 1.0.0
 */
public interface FormulaCalEngine<T> {

    /**
     * 执行计算
     *
     * @param formula 公式
     * @param params  参数列表
     * @return 执行结果
     */
    CalResultEntity execute(String formula, Collection<ParameterEntity> params);

    /**
     * 获取解析器
     *
     * @return 参数解析器
     */
    FormulaBeanDefinitionResolver<T> getResolver();

    /**
     * 设置参数解析器
     *
     * @param resolver 解析器
     */
    void setResolver(FormulaBeanDefinitionResolver<T> resolver);

}
